import java.util.PriorityQueue;

public class Leetcode {
}

//leetcode:1046:最后一块石头重量
class Solution1 {
    public int lastStoneWeight(int[] stones) {
        //利用大根堆进行排序
        PriorityQueue<Integer> q = new PriorityQueue<>((a, b) -> b-a);
        for(int x : stones){
            q.offer(x);
        }
        //如果队列中的元素大于1个
        while(q.size() > 1){
            //就将前两个大的元素出队列
            int x = q.poll();
            int y = q.poll();

            //如果x=y，这两个石头就会直接去掉，如果x>就让大的减去小的重量，然后再入队列
            //因我们只需要判断x是否大于y即可
            if(x > y){
                //将这两个元素相减，在入队列
                q.offer(x-y);
            }
        }

        return q.isEmpty() == true ? 0 : q.poll();
    }
}

//leetcode:703:数据流中的第k大元素
class KthLargest {
    PriorityQueue<Integer> q;
    int _k;
    public KthLargest(int k, int[] nums) {
        _k = k;
        q = new PriorityQueue<>();

        for(int x : nums){
            q.offer(x);
            if(q.size() > _k){
                q.poll();
            }
        }
    }

    public int add(int val) {
        q.offer(val);
        if(q.size() > _k){
            q.poll();
        }
        return q.peek();
    }
}
